/**
 * 
 */
package com.hpe.core.datasource.aspect;

import org.apache.log4j.Logger;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

import com.hpe.core.datasource.DatabaseContextHolder;

/**
 * 售票系统数据源
 * @author luolin
 *
 * @version $id:BssDatasourceAspect.java,v 0.1 2016年1月11日 下午4:52:03 luolin Exp $
 */
@Aspect
@Component
public class TicketDatasourceAspect implements IDataSourceAspect {
    /** 日志 */
    private static final Logger LOGGER              = Logger.getLogger(TicketDatasourceAspect.class);

    /** 切点：售票量统计 */
    private static final String TICKTE_TOTAL_REPORT = "execution(* com.hpe.business.dao.tickets.*.*(..))";

    /* 
     * 设置数据源（前置通知）
     * @see com.common.multiple.datasource.aspect.AbstractDataSourceAspect#setDatasource(org.aspectj.lang.JoinPoint)
     */
    @Before(TICKTE_TOTAL_REPORT)
    @Override
    public void setDatasource(JoinPoint jp) {
        LOGGER.info("【切换成售票系统数据源（前置通知）】");
        DatabaseContextHolder.setCustomerType("ticketDatasource");
    }

    /* 
     * 切换成默认数据源（后置通知）
     * @see com.common.multiple.datasource.aspect.IDataSourceAspect#backup2DefaultDatasource(org.aspectj.lang.JoinPoint)
     */
    @Override
    @After(TICKTE_TOTAL_REPORT)
    public void backup2DefaultDatasource(JoinPoint jp) {
        LOGGER.info("【切换成默认数据源（后置通知）】");
        DatabaseContextHolder.setCustomerType("defaultDatasource");
    }

}
